home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / sendmail / sendmail.cf < prev    next >
Text File  |  1991-08-14  |  16KB  |  612 lines

  1. #
  2. #  Sendmail
  3. #  Copyright (c) 1983  Eric P. Allman
  4. #  Berkeley, California
  5. #
  6. #  Copyright (c) 1983 Regents of the University of California.
  7. #  All rights reserved.  The Berkeley software License Agreement
  8. #  specifies the terms and conditions for redistribution.
  9. #
  10. #    @(#)renoir.mc    1.10 (Berkeley) 4/25/87
  11. #
  12. ############################################################
  13. ############################################################
  14. #####
  15. #####        SENDMAIL CONFIGURATION FILE
  16. #####
  17. ############################################################
  18. ############################################################
  19.  
  20.  
  21.  
  22. ##################
  23. #   local info   #
  24. ##################
  25.  
  26. # internet hostname    REPLACE HOSTNAME WITH YOUR MACHINE NAME HERE
  27. # The w variable contains the name of the host on which the sendmail is
  28. # running, while the w class contains the name(s) of the local host and
  29. # those of the main mail server as well.
  30. #
  31. Dwsprite.Berkeley.EDU
  32. CwLOCAL sprite where
  33.  
  34. #############################
  35. ###   Setup Information   ###
  36. #############################
  37.  
  38.  
  39. ######################
  40. #   General Macros   #
  41. ######################
  42.  
  43. # our arpanet gateway.  Since ucbvax is highly loaded and ginger is 
  44. # NIC-registed, let's make outgoing mail claim to be from 
  45. # user%spur-host@ginger.Berkeley.EDU instead of @Berkeley.EDU. 
  46. # ... FD 2/12/88
  47. DAginger.Berkeley.EDU
  48.  
  49. # local domain names
  50. DDBerkeley.EDU
  51.  
  52. # major relay host
  53. DRucbvax
  54.  
  55. # bitnet relay
  56. DCjade
  57.  
  58. # berknet relay
  59. DB$R
  60.  
  61. # my official hostname
  62. Dj$w
  63.  
  64.  
  65.  
  66. ###############
  67. #   Classes   #
  68. ###############
  69.  
  70. # our arpanet gateway
  71. CABerkeley UCB ucbc70 c70 UCB-C70 u UCB-VAX ucbvax
  72.  
  73. # local domain names
  74. CDBERKELEY UCB ucbc70 c70 ucb-c70 u UCB-VAX ucbvax
  75.  
  76. # major relay host
  77. CRucbvax vax
  78.  
  79. # all supported top-level domains
  80. CKLOCAL ARPA UUCP BITNET CSNET EDU MIL COM GOV AU IL NET ORG UK US
  81.  
  82. # local domains
  83. CTLOCAL ARPA UUCP BITNET CSNET
  84.  
  85. # legal Internet top-level domains
  86. CPARPA EDU MIL GOV COM IL NET ORG UK US
  87.  
  88. # Internal domains that we use in rewriting (not known by NIC)
  89. CILOCAL UUCP BITNET CSNET DEC MailNET CC
  90.  
  91.  
  92.  
  93. ############################################################
  94. ############################################################
  95. #####
  96. #####    BERKELEY HOSTS REGISTERED WITH THE NIC
  97. #####
  98. ############################################################
  99. ############################################################
  100.  
  101.  
  102. CNbach ucbbach
  103. CNbizet ucbbizet
  104. CNbrahms ucbbrahms
  105. CNcad ucbcad
  106. CNcartan ucbcartan
  107. CNdegas ucbdegas
  108. CNeast ucbeast
  109. CNernie ucbernie
  110. CNesvax ucbesvax
  111. CNginger ucbginger
  112. CNingres ucbingres
  113. CNjade ucbjade
  114. CNji ucbji
  115. CNmedea ucbmedea
  116. CNmike ucbmike
  117. CNmonet ucbmonet
  118. CNoz ucboz
  119. CNrenoir ucbrenoir
  120. CNshadow ucbshadow
  121. CNucbarpa
  122. CNucbvax
  123. CNviolet ucbviolet
  124. CNweyl ucbweyl
  125.  
  126.  
  127. ######################
  128. #   Version Number   #
  129. ######################
  130.  
  131. DZ1.29
  132.  
  133.  
  134. ######################
  135. #   Special macros   #
  136. ######################
  137.  
  138. # my name
  139. DnMAILER-DAEMON
  140. # UNIX header format
  141. DlFrom $g  $d
  142. # delimiter (operator) characters
  143. Do.:%@!^=/[]
  144. # format of a total name
  145. Dq$g$?x ($x)$.
  146. # SMTP login message
  147. De$j Sendmail $v/$Z ready at $b
  148.  
  149. # forwarding host -- redefine this if you can't talk to the relay directly #
  150. DF$R
  151.  
  152. ###############
  153. #   Options   #
  154. ###############
  155.  
  156. # location of alias file
  157. OA/sprite/lib/sendmail/aliases
  158. # wait up to ten minutes for alias file rebuild
  159. # actually, since we don't use dbm anymore, this is irrelevant
  160. Oa10
  161. # substitution for space (blank) characters
  162. OB.
  163. # (don't) connect to "expensive" mailers
  164. #Oc
  165. # default delivery mode (deliver in background)
  166. Odbackground
  167. # temporary file mode
  168. OF0600
  169. # default GID
  170. Og1
  171. # location of help file
  172. OH/sprite/lib/sendmail/sendmail.hf
  173. # log level
  174. # default is 9; we use 8 as cutoff for uninteresting messages.
  175. OL8
  176. # default network name
  177. ONARPA
  178. # default messages to old style
  179. Oo
  180. # queue directory
  181. OQ/sprite/spool/mqueue
  182. # read timeout -- violates protocols
  183. Or2h
  184. # status file
  185. # we need to use md as a link to $MACHINE.md because otherwise sendmail
  186. # interprets the $ incorrectly.
  187. OS/sprite/lib/sendmail/md/sendmail.st
  188. # queue up everything before starting transmission
  189. Os
  190. # default timeout interval
  191. OT3d
  192. # time zone names (V6 only)
  193. OtPST,PDT
  194. # default UID
  195. Ou1
  196. # wizard's password
  197. OW*
  198. # load average at which we just queue messages
  199. Ox8
  200. # load average at which we refuse connections
  201. OX12
  202.  
  203. ###########################
  204. #   Message precedences   #
  205. ###########################
  206.  
  207. Pfirst-class=0
  208. Pspecial-delivery=100
  209. Pbulk=-60
  210. Pjunk=-100
  211.  
  212. #####################
  213. #   Trusted users   #
  214. #####################
  215.  
  216. Troot
  217. Tdaemon
  218. Tuucp
  219. Teric
  220. Tnetwork
  221.  
  222. #########################
  223. #   Format of headers   #
  224. #########################
  225.  
  226. H?P?Return-Path: <$g>
  227. HReceived: $?sfrom $s $.by $j ($v/$Z)
  228.     id $i; $b
  229. H?D?Resent-Date: $a
  230. H?D?Date: $a
  231. H?F?Resent-From: $q
  232. H?F?From: $q
  233. H?x?Full-Name: $x
  234. HSubject:
  235. # HPosted-Date: $a
  236. # H?l?Received-Date: $b
  237. H?M?Resent-Message-Id: <$t.$i@$j>
  238. H?M?Message-Id: <$t.$i@$j>
  239.  
  240.  
  241.  
  242. ###########################
  243. ###   Rewriting Rules   ###
  244. ###########################
  245.  
  246.  
  247. ################################
  248. #  Sender Field Pre-rewriting  #
  249. ################################
  250. S1
  251. #R$*<$*>$*        $1$2$3                defocus
  252.  
  253. ###################################
  254. #  Recipient Field Pre-rewriting  #
  255. ###################################
  256. S2
  257. #R$*<$*>$*        $1$2$3                defocus
  258.  
  259.  
  260.  
  261. #################################
  262. #  Final Output Post-rewriting  #
  263. #################################
  264. S4
  265.  
  266. R@            $@                handle <> error addr
  267.  
  268. # resolve numeric addresses to name if possible
  269. R$*<@[$+]>$*        $:$1<@$[[$2]$]>$3        lookup numeric internet addr
  270.  
  271. # externalize local domain info
  272. R$*<$+>$*        $1$2$3                defocus
  273. R@$+:@$+:$+        @$1,@$2:$3            <route-addr> canonical
  274.  
  275. # UUCP must always be presented in old form (with domains, leave the ".uucp")
  276. R$+@$-.UUCP        $2!$1                u@h.UUCP => h!u
  277. R$+@$-.$-.UUCP        $2.$3.uucp!$1            u@h.UUCP => h!u
  278. R$+@$-.$-.$-.UUCP    $2.$3.$4.uucp!$1        u@h.UUCP => h!u
  279. R$+@$-.$-.$-.$-.UUCP    $2.$3.$4.$5.uucp!$1        u@h.UUCP => h!u
  280. R$+@$-.$-.$-.$-.$-.UUCP    $2.$3.$4.$5.$6.uucp!$1        u@h.UUCP => h!u
  281.  
  282. # delete duplicate local names -- mostly for arpaproto.mc
  283. R$+%$=w@$=w        $1@$w                u%UCB@UCB => u@UCB
  284. R$+%$=w@$=w.$D        $1@$w                u%UCB@UCB => u@UCB
  285.  
  286.  
  287.  
  288. ###########################
  289. #  Name Canonicalization  #
  290. ###########################
  291. S3
  292.  
  293. # handle "from:<>" special case
  294. R<>            $@@                turn into magic token
  295.  
  296. # basic textual canonicalization -- note RFC733 heuristic here
  297. R$*<$*<$*<$+>$*>$*>$*    $4                3-level <> nesting
  298. R$*<$*<$+>$*>$*        $3                2-level <> nesting
  299. R$*<$+>$*        $2                basic RFC821/822 parsing
  300. R$+ at $+        $1@$2                "at" -> "@" for RFC 822
  301.  
  302. # make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
  303. R@$+,$+            @$1:$2                change all "," to ":"
  304.  
  305. # localize and dispose of route-based addresses
  306. R@$+:$+            $@$>6<@$1>:$2            handle <route-addr>
  307.  
  308. # more miscellaneous cleanup
  309. R$+            $:$>8$1                host dependent cleanup
  310. R$+:$*;@$+        $@$1:$2;@$3            list syntax
  311. R$+:$*;            $@$1:$2;            list syntax
  312. R$+@$+            $:$1<@$2>            focus on domain
  313. R$+<$+@$+>        $1$2<@$3>            move gaze right
  314. R$+<@$+>        $@$>6$1<@$2>            already canonical
  315.  
  316. # convert old-style addresses to a domain-based address
  317. R$+^$+            $1!$2                convert ^ to !
  318. R$-!$+            $@$>6$2<@$1.UUCP>        resolve uucp names
  319. R$+.$-!$+        $@$>6$3<@$1.$2>            domain uucps
  320. R$+!$+            $@$>6$2<@$1.UUCP>        uucp subdomains
  321. R$-:$+            $@$>6$2<@$1>            host:user
  322. R$-=$+            $@$>6$2<@$1.BITNET>        resolve bitnet names
  323. R$+%$+            $:$>9$1%$2            user%host
  324. R$+<@$+>        $@$>6$1<@$2>            already canonical
  325. R$-.$+            $@$>6$2<@$1>            host.user
  326.  
  327.  
  328. #################################
  329. #   special local conversions   #
  330. #################################
  331.  
  332. S6
  333. R$*<@$=w>$*        $:$1<@$w>$3            get into u@$w form
  334. R$*<@$=w.$D>$*        $:$1<@$w>$3
  335. R$*<@$=w.EDU>$*        $:$1<@$w>$3
  336. R$*<@$=U.UUCP>$*    $:$1<@$w>$3
  337.  
  338. ################################
  339. #   Change rightmost % to @.   #
  340. ################################
  341.  
  342. S9
  343. R$*%$*            $1@$2                First make them all @'s.
  344. R$*@$*@$*        $1%$2@$3            Undo all but the last.
  345. R$*@$*            $@$1<@$2>            Put back the brackets.
  346.  
  347.  
  348.  
  349. ###################
  350. ###   Mailers   ###
  351. ###################
  352.  
  353.  
  354. ############################################################
  355. ############################################################
  356. #####
  357. #####        Local and Program Mailer specification
  358. #####
  359. ############################################################
  360. ############################################################
  361.  
  362. # we need to use md as a link to $MACHINE.md because otherwise sendmail
  363. # interprets the $ incorrectly.
  364. Mlocal,    P=/sprite/lib/sendmail/md/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $u
  365. Mprog,    P=/sprite/cmds/sh,   F=ElsDFMe,   S=10, R=20, A=sh -c $u
  366.  
  367. S10
  368. R@            $n            errors to mailer-daemon
  369.  
  370.  
  371. ############################################################
  372. ############################################################
  373. #####
  374. #####        Arpanet TCP Mailer specification
  375. #####
  376. #####    Messages processed by this specification are assumed to leave
  377. #####    the local domain -- hence, they must be canonical according to
  378. #####    RFC822 etc.
  379. #####
  380. #####    This mailer is to be used with the Berkeley Name Server.
  381. #####
  382. ############################################################
  383. ############################################################
  384.  
  385. Mtcp,    P=[IPC], F=mDFMueXLC, S=14, R=24, A=IPC $h, E=\r\n
  386.  
  387. S14
  388.  
  389. # pass <route-addr>'s through
  390. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  391.  
  392. # map colons to dots everywhere
  393. R$*:$*            $1.$2                map colons to dots
  394.  
  395. # output local host in user@host.BERKELEY.EDU syntax
  396. R$-            $1<@$w>                user w/o host
  397. R$+<@$=w>        $:$1<@$w>            this host
  398. R$+<@$->        $:$1<@$[$2$]>            canonicalize into dom
  399. R$+<@$->        $:$1<@$2.$D>            if nameserver fails
  400. #Remove original restriction for nic-registered hosts
  401. #R$+<@$=N.$D>        $@$1<@$2.$D>            nic-reg hosts are ok
  402. #R$+<@$*.$D>        $@$1%$2.$D<@$A>            else -> u%h@gateway
  403. R$+<@$*.$D>        $@$1<@$2.$D>            all hosts okay
  404.  
  405. # if not local, and not a "fake" domain, ask the nameserver
  406. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  407. R$+<@[$+]>        $@$1<@[$2]>            already ok
  408.  
  409. # output internal ("fake") domains as "user%host@relay"
  410.  
  411. R$+<@$+.CSNET>        $@$1%$2.CSNET<@relay.cs.net>    user@host.CSNET
  412. R$+<@$+.BITNET>        $@$1%$2.BITNET<@jade.berkeley.edu>    user@host.BITNET
  413. R$+<@$+.UUCP>        $@$2!$1<@$w>            user@host.UUCP
  414.  
  415.  
  416. S24
  417.  
  418. # put in <> kludge
  419. R$*<$*>$*        $1$2$3                defocus
  420. R$*            $:$>3$1                now canonical form
  421.  
  422. # pass <route-addr>'s through
  423. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  424.  
  425. # map colons to dots everywhere.....
  426. R$*:$*            $1.$2                map colons to dots
  427.  
  428. # output local host in user@host.domain syntax
  429. R$-            $1<@$w>                user w/o host
  430. R$+<@$=w>        $:$1<@$w>            this host
  431. R$+<@$->        $:$1<@$[$2$]>            canonicalize into dom
  432. R$+<@$->        $:$1<@$2.$D>            if nameserver fails
  433. #Remove original restriction for nic-registered hosts
  434. #R$+<@$=N.$D>        $@$1<@$2.$D>            nic-reg hosts are ok
  435. #R$+<@$*.$D>        $@$1%$2.$D<@$A>            else -> u%h@gateway
  436. R$+<@$*.$D>        $@$1<@$2.$D>            all hosts okay
  437.  
  438. # if not local, and not a "fake" domain, ask the nameserver
  439. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  440. R$+<@[$+]>        $@$1<@[$2]>            already ok
  441.  
  442. # Hide fake domains behind gateways
  443.  
  444. R$+<@$+.CSNET>        $@$1%$2.CSNET<@relay.cs.net>    user@host.CSNET
  445. R$+<@$+.BITNET>        $@$1<@$2.BITNET>        user@host.BITNET
  446. R$+<@$+.UUCP>        $@$2!$1                user@host.UUCP
  447.  
  448.  
  449.  
  450. ############################################################
  451. ############################################################
  452. #####
  453. #####        Local Domain TCP Mailer specification
  454. #####
  455. #####    Messages processed by this specification are assumed to remain
  456. #####    the local domain -- hence, they must be canonical according to
  457. #####    RFC822 etc.
  458. #####
  459. #####    This mailer is to be used with the Berkeley Name Server.
  460. #####
  461. ############################################################
  462. ############################################################
  463.  
  464. Mtcpld,    P=[IPC], F=mDFMueXLC, S=17, R=27, A=IPC $h, E=\r\n
  465.  
  466. S17
  467.  
  468. # cleanup forwarding a bit
  469. R$*<$*>$*        $1$2$3                defocus
  470. R$*            $:$>3$1                canonicalize
  471. R$*%$*<@$w>        $:$>9$1%$2            user%localhost@localdomain
  472.  
  473. # pass <route-addr>'s through
  474. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  475.  
  476. # map colons to dots everywhere
  477. R$*:$*            $1.$2                map colons to dots
  478.  
  479. # output local host as user@host.domain
  480. R$-            $@$1<@$w>            user w/o host
  481. R$+<@$w>        $@$1<@$w>            this host
  482. R$+<@$=w>        $@$1<@$w>            or an alias
  483. R$+<@$->        $:$1<@$[$2$]>            ask nameserver
  484. R$+<@$w>        $@$1<@$w>            this host
  485. R$+<@$->        $@$1<@$2.$D>            if nameserver fails
  486.  
  487. # if not local, and not a "fake" domain, ask the nameserver
  488. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  489. R$+<@[$+]>        $@$1<@[$2]>            already ok
  490.  
  491. # output fake domains as user%fake@relay
  492.  
  493. R$+<@$+.CSNET>        $@$1%$2.CSNET<@relay.cs.net>    user@host.CSNET
  494. R$+<@$+.BITNET>        $@$1%$2.BITNET<@jade.berkeley.edu>     user@host.bitnet
  495. R$+<@$+.UUCP>        $@$2!$1<@$w>            user@host.UUCP
  496.  
  497.  
  498. S27
  499.  
  500. # cleanup
  501. R$*<$*>$*        $1$2$3                defocus
  502. R$*            $:$>3$1                now canonical form
  503. R$*%$*<@$w>        $:$>9$1%$2            user%localhost@localdomain
  504.  
  505. # pass <route-addr>'s through
  506. R<@$+>$*        $@<@$[$1$]>$2            resolve <route-addr>
  507.  
  508. # map colons to dots everywhere
  509. R$*:$*            $1.$2                map colons to dots
  510.  
  511. # output local host as user@host.domain
  512. R$-            $@$1<@$w>            user w/o host
  513. R$+<@$w>        $@$1<@$w>            this host
  514. R$+<@$=w>        $@$1<@$w>            or an alias
  515. R$+<@$->        $:$1<@$[$2$]>            ask nameserver
  516. R$+<@$w>        $@$1<@$w>            this host
  517. R$+<@$->        $@$1<@$2.$D>            if nameserver fails
  518.  
  519. # if not local, and not a "fake" domain, ask the nameserver
  520. R$+<@$+.$~I>        $@$1<@$[$2.$3$]>        user@host.domain
  521. R$+<@[$+]>        $@$1<@[$2]>            already ok
  522.  
  523. # output fake domains as user%fake@relay
  524.  
  525. R$+<@$+.CSNET>        $@$1%$2.CSNET<@relay.cs.net>    user@host.CSNET
  526. R$+<@$+.BITNET>        $@$1<@$2.BITNET>        user@host.BITNET
  527. R$+<@$+.UUCP>        $@$2!$1                user@host.UUCP
  528.  
  529.  
  530.  
  531.  
  532.  
  533. #####################
  534. ###   Rule Zero   ###
  535. #####################
  536.  
  537.  
  538. ############################################################
  539. ############################################################
  540. #####
  541. #####        RULESET ZERO PREAMBLE
  542. #####
  543. #####    The beginning of ruleset zero is constant through all
  544. #####    configurations.
  545. #####
  546. ############################################################
  547. ############################################################
  548.  
  549. S0
  550.  
  551. # first make canonical
  552. R$*<$*>$*        $1$2$3                defocus
  553. R$+            $:$>3$1                make canonical
  554.  
  555. # handle special cases
  556. R$*<@[$+]>$*        $:$1<@$[[$2]$]>$3        lookup numeric internet addr
  557. R$*<@[$+]>$*        $#tcp$@[$2]$:$1@[$2]$3        numeric internet spec
  558. R$+            $:$>6$1
  559. R$-<@$w>        $#local$:$1
  560. R@            $#error$:Invalid address    handle <> form
  561.  
  562. # now delete the local info (extra, in case the name server messes up)
  563. R<@$w>:$*        $@$>0$1                @here:... -> ...
  564. R$*<@$w>        $@$>0$1                ...@here -> ...
  565.  
  566. # canonicalize using the nameserver if not internal domain
  567. R$*<@$*.$~I>$*        $:$1<@$[$2.$3$]>$4
  568. R$*<@$->$*        $:$1<@$[$2$]>$3
  569. R$*<@$->$*        $:$1<@$2.$D>$3            if nameserver fails
  570.  
  571. # now delete the local info
  572. R<@$w>:$*        $@$>0$1                @here:... -> ...
  573. R$*<@$w>        $@$>0$1                ...@here -> ...
  574.  
  575. # forward around hosts with communication problems
  576. R$*<@$=F>$*        $#tcp$@$F$:$1<@$2>$3        reroute message
  577.  
  578. ##################################
  579. #  End of ruleset zero preamble  #
  580. ##################################
  581.  
  582.  
  583. ###############################################
  584. ###   Machine dependent part of Rule Zero   ###
  585. ###############################################
  586.  
  587.  
  588.  
  589.  
  590.  
  591. # resolve fake top level domains by forwarding to other hosts
  592. R$*<@$+.BITNET>$*    $#tcpld$@jade.berkeley.edu$:$1<@$2.BITNET>$3    user@host.BITNET
  593. R$*<@$+.CSNET>$*    $#tcp$@relay.cs.net$:$1<@$2.CSNET>$3    user@host.CSNET
  594.  
  595.  
  596. # forward UUCP traffic to our UUCP gateway
  597. R$*<@$*.UUCP>$*        $#tcpld$@$F$:$1<@$2.UUCP>    uucp mail
  598.  
  599. # On monet, things are set up with the following two rules.
  600. ## hide behind a gateway when talking to people who don't speak domains
  601. #R$*<@$*.arpa>$*        $#tcp$@$2.arpa$:$1<@$2.arpa>$3    user@host.arpa
  602. #
  603. ## but don't hide if they do.
  604. #R$*<@$*>$*        $#tcpld$@$2$:$1<@$2>$3        user@host.domain
  605.  
  606. # Instead, we hide all the time unless we're within our local domain.
  607. R$*<@$*.$D>$*        $#tcpld$@$2.$D$:$1<@$2.$D>$3    user@host.our.domain
  608. R$*<@$*>$*        $#tcp$@$2$:$1<@$2>$3        user@host.domain
  609.  
  610. # remaining names must be local
  611. R$+            $#local$:$1            everything else
  612.